1. Field of the Invention
The invention relates generally to the field of digital data processing systems and more specifically to bus communications adapters for facilitating communications between buses in such systems.
2. Description of the Prior Art
A typical digital data processing (that is, computer) system includes three basic elements, namely a processor element, a memory element, and an input/output element. The memory element stores information in addressable storage locations. This information includes both data and instructions for processing the data. The processor element includes one or more digital data processing units, or "processors", each of which causes information to be transferred, or fetched, to it from the memory element, interprets the incoming information as either instructions or data, and processes the data in accordance with the instructions. The results are then stored in addressed locations in the memory element.
The input/output element also communicates with the memory element in order to transfer information into the system and to obtain the processed data from it. Typical units comprising the input/output element include, for example, printers, teletypewriters, and video display terminals, and may also include secondary information storage devices such as disk or tape storage units. Units comprising the input/output element normally operate in accordance with control information supplied to it by the processor element. The control information defines the operation to be performed by the input/output unit. At least one class of operations performed by an input/output unit is the transfer of user information, that is, information used by a user program, between the input/output unit and the memory element.
In addition to functioning as input/output devices, disk storage units and, sometimes, tape storage units may also function as part of the memory element. In particular, a memory element typically includes a main memory, whose contents are accessible to the processor relatively quickly but which is generally relatively high-cost storage. Modern main memories are typically implemented using MOS or bipolar semiconductor technology and may provide on the order of a fraction of a megabyte to several tens of megabytes of storage.
In the past a digital data processing system typically was large and expensive. Typically, systems included one processor, a memory and several input/output units, all interconnected by one or more buses. To increase processing speed, several computer systems were designed to include one or only a few additional processors which normally shared memory and input/output units.
However, with the advent of minicomputers, several systems were developed, primarily although not exclusively for research purposes, which included a larger number, that is, on the order of ten or more, of processors effectively connected in clusters to form a multiprocessing system. Clustering has continued with microprocessors. In a clustered system, typically each processor is part of a subsystem which itself is a complete digital data processing system, including an associated local memory and, in most cases, one or more input/output devices, all of which are connected to an input/output bus of the minicomputer or microprocessor. The various subsystems are interconnected through a higher level communications mechanism to permit the processors in the various subsystems to communicate with each other and to access memory and use input/output units which may be physically part of other subsystems. Generally, each processor's input/output bus is connected to the higher level communications mechanism through a bus adapter. This permits transfers to take place over the input/output buses in the various subsystems at the same time, which would not be permissible if all of the subsystem's input/output buses were connected directly together. Only if a processor in one subsystem needs to communicate with another subsystem does a transfer take place over the higher level communications mechanism. Efficient operation of the clustered system, as a whole, requires an efficient communication mechanism between each of the subsystems and the higher level communications mechanism, particularly if it is desired to allow the various subsystems to share each others' memories and input/output units.